Micron Document
🎖️GitЯра🎖️


Displaying Raw • Download

androidApp/build.gradle.kts fix/fdroid-map-rendering (113121c4) Text, 15.37 KB

T8b949e/*
* Copyright (c) 2026 Meshtastic LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/

Tff7b72import T7ee787com.android.build.api.dsl.ApplicationExtension
Tff7b72import T7ee787org.meshtastic.buildlogic.configProperties
Tff7b72import T7ee787org.meshtastic.buildlogic.resolveVersionInfo
Tff7b72import T7ee787java.util.Properties

Tff7b72val Te6edf3versionInfo Tff7b72= Te6edf3resolveVersionInfoTb4b4b4(Tb4b4b4)

Te6edf3plugins Tb4b4b4{
Te6edf3aliasTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3pluginsTb4b4b4.Te6edf3meshtasticTb4b4b4.Te6edf3androidTb4b4b4.Te6edf3applicationTb4b4b4)
Te6edf3aliasTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3pluginsTb4b4b4.Te6edf3meshtasticTb4b4b4.Te6edf3androidTb4b4b4.Te6edf3applicationTb4b4b4.Te6edf3flavorsTb4b4b4)
Te6edf3aliasTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3pluginsTb4b4b4.Te6edf3meshtasticTb4b4b4.Te6edf3androidTb4b4b4.Te6edf3applicationTb4b4b4.Te6edf3composeTb4b4b4)
Te6edf3aliasTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3pluginsTb4b4b4.Te6edf3meshtasticTb4b4b4.Te6edf3kotlinxTb4b4b4.Te6edf3serializationTb4b4b4)
Te6edf3aliasTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3pluginsTb4b4b4.Te6edf3meshtasticTb4b4b4.Te6edf3koinTb4b4b4)
Te6edf3aliasTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3pluginsTb4b4b4.Te6edf3meshtasticTb4b4b4.Te6edf3androidTb4b4b4.Te6edf3secretsTb4b4b4)
Te6edf3aliasTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3pluginsTb4b4b4.Te6edf3androidxTb4b4b4.Te6edf3baselineprofileTb4b4b4)
Te6edf3aliasTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3pluginsTb4b4b4.Te6edf3meshtasticTb4b4b4.Te6edf3aboutlibrariesTb4b4b4)
T8b949e// Version-less on purpose: mokkery is embedded in the convention-plugin jar (build-logic
T8b949e// `implementation`), so a versioned alias(libs.plugins.mokkery) request is rejected by Gradle.
Te6edf3idTb4b4b4(Ta5d6ff"Ta5d6ffdev.mokkeryTa5d6ff"Tb4b4b4)
Te6edf3aliasTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3pluginsTb4b4b4.Te6edf3devtoolsTb4b4b4.Te6edf3kspTb4b4b4)
Tb4b4b4}

T8b949e// Isolated-Projects-safe root access — never reach through `rootProject`.
Tff7b72val Te6edf3keystorePropertiesFile Tff7b72= Te6edf3isolatedTb4b4b4.Te6edf3rootProjectTb4b4b4.Te6edf3projectDirectoryTb4b4b4.Te6edf3fileTb4b4b4(Ta5d6ff"Ta5d6ffkeystore.propertiesTa5d6ff"Tb4b4b4)Tb4b4b4.Te6edf3asFile
Tff7b72val Te6edf3keystoreProperties Tff7b72= Te6edf3PropertiesTb4b4b4(Tb4b4b4)

Tff7b72if Tb4b4b4(Te6edf3keystorePropertiesFileTb4b4b4.Te6edf3existsTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3keystorePropertiesFileTb4b4b4.Te6edf3inputStreamTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3use Tb4b4b4{ Te6edf3keystorePropertiesTb4b4b4.Te6edf3loadTb4b4b4(Tffa657itTb4b4b4) Tb4b4b4}
Tb4b4b4}

T8b949e// The templated Android Auto experience (CarAppService + HomeScreen) is a Google "templated
T8b949e// messaging" beta feature that is publishable only to Closed/Internal tracks — Open/Production
T8b949e// submissions are auto-rejected (https://developer.android.com/training/cars/communication/templated-messaging).
T8b949e// Default builds therefore ship *notification-only* car messaging, which is GA and production-safe.
T8b949e// Build a Closed-track templated AAB with: -PenableCarTemplates=true
Tff7b72val Te6edf3enableCarTemplates Tff7b72= Te6edf3providersTb4b4b4.Te6edf3gradlePropertyTb4b4b4(Ta5d6ff"Ta5d6ffenableCarTemplatesTa5d6ff"Tb4b4b4)Tb4b4b4.Te6edf3map Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3toBooleanTb4b4b4(Tb4b4b4) Tb4b4b4}Tb4b4b4.Te6edf3getOrElseTb4b4b4(Tff7b72falseTb4b4b4)

Te6edf3configureTff7b72<Te6edf3ApplicationExtensionTff7b72> Tb4b4b4{
Te6edf3namespace Tff7b72= Ta5d6ff"Ta5d6fforg.meshtastic.appTa5d6ff"

T8b949e// When templates are enabled, this res dir overrides feature:car's notification-only
T8b949e// automotive_app_desc.xml with one that also declares <uses name="template" />.
Tff7b72if Tb4b4b4(Te6edf3enableCarTemplatesTb4b4b4) Tb4b4b4{
Te6edf3sourceSetsTb4b4b4.Te6edf3getByNameTb4b4b4(Ta5d6ff"Ta5d6ffgoogleTa5d6ff"Tb4b4b4)Tb4b4b4.Te6edf3resTb4b4b4.Te6edf3srcDirTb4b4b4(Ta5d6ff"Ta5d6ffsrc/googleCarTemplates/resTa5d6ff"Tb4b4b4)
Tb4b4b4}

Te6edf3signingConfigs Tb4b4b4{
T8b949e// Shared debug key (checked in; debug keys are not secret) so local builds and CI snapshots
T8b949e// stay update-compatible — AGP's default per-machine key makes every snapshot un-sideloadable.
Te6edf3getByNameTb4b4b4(Ta5d6ff"Ta5d6ffdebugTa5d6ff"Tb4b4b4) Tb4b4b4{
Te6edf3storeFile Tff7b72= Te6edf3isolatedTb4b4b4.Te6edf3rootProjectTb4b4b4.Te6edf3projectDirectoryTb4b4b4.Te6edf3fileTb4b4b4(Ta5d6ff"Ta5d6ffconfig/debug.keystoreTa5d6ff"Tb4b4b4)Tb4b4b4.Te6edf3asFile
Te6edf3storePassword Tff7b72= Ta5d6ff"Ta5d6ffandroidTa5d6ff"
Te6edf3keyAlias Tff7b72= Ta5d6ff"Ta5d6ffandroiddebugkeyTa5d6ff"
Te6edf3keyPassword Tff7b72= Ta5d6ff"Ta5d6ffandroidTa5d6ff"
Tb4b4b4}
Te6edf3createTb4b4b4(Ta5d6ff"Ta5d6ffreleaseTa5d6ff"Tb4b4b4) Tb4b4b4{
Te6edf3keyAlias Tff7b72= Te6edf3keystorePropertiesTff7b72[Ta5d6ff"Ta5d6ffkeyAliasTa5d6ff"Tff7b72] Tff7b72as Tffa657String?
Te6edf3keyPassword Tff7b72= Te6edf3keystorePropertiesTff7b72[Ta5d6ff"Ta5d6ffkeyPasswordTa5d6ff"Tff7b72] Tff7b72as Tffa657String?
Te6edf3storeFile Tff7b72= Te6edf3keystorePropertiesTff7b72[Ta5d6ff"Ta5d6ffstoreFileTa5d6ff"Tff7b72]Tff7b72?.Te6edf3let Tb4b4b4{ Te6edf3fileTb4b4b4(Tffa657itTb4b4b4) Tb4b4b4}
Te6edf3storePassword Tff7b72= Te6edf3keystorePropertiesTff7b72[Ta5d6ff"Ta5d6ffstorePasswordTa5d6ff"Tff7b72] Tff7b72as Tffa657String?
Tb4b4b4}
Tb4b4b4}
Te6edf3defaultConfig Tb4b4b4{
Te6edf3applicationId Tff7b72= Te6edf3configPropertiesTb4b4b4.Te6edf3getPropertyTb4b4b4(Ta5d6ff"Ta5d6ffAPPLICATION_IDTa5d6ff"Tb4b4b4)

Te6edf3versionCode Tff7b72= Te6edf3versionInfoTb4b4b4.Te6edf3versionCode
Te6edf3versionName Tff7b72= Te6edf3versionInfoTb4b4b4.Te6edf3versionName
Te6edf3buildConfigFieldTb4b4b4(Ta5d6ff"Ta5d6ffStringTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffMIN_FW_VERSIONTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff\"Tffd700${Te6edf3versionInfoTb4b4b4.Te6edf3minFwVersionTffd700}Ta5d6ff\"Ta5d6ff"Tb4b4b4)
Te6edf3buildConfigFieldTb4b4b4(Ta5d6ff"Ta5d6ffStringTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffABS_MIN_FW_VERSIONTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff\"Tffd700${Te6edf3versionInfoTb4b4b4.Te6edf3absMinFwVersionTffd700}Ta5d6ff\"Ta5d6ff"Tb4b4b4)
T8b949e// We have to list all translated languages here,
T8b949e// because some of our libs have bogus languages that google play
T8b949e// doesn't like and we need to strip them (gr)
Tff7b72val Te6edf3ci Tff7b72= Te6edf3providersTb4b4b4.Te6edf3gradlePropertyTb4b4b4(Ta5d6ff"Ta5d6ffciTa5d6ff"Tb4b4b4)Tb4b4b4.Te6edf3map Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3toBooleanTb4b4b4(Tb4b4b4) Tb4b4b4}Tb4b4b4.Te6edf3getOrElseTb4b4b4(Tff7b72falseTb4b4b4)
Tff7b72if Tb4b4b4(Te6edf3ciTb4b4b4) Tb4b4b4{
Te6edf3loggerTb4b4b4.Te6edf3lifecycleTb4b4b4(Ta5d6ff"Ta5d6ffCI build detected - limiting locale filters for faster packagingTa5d6ff"Tb4b4b4)
Te6edf3androidResourcesTb4b4b4.Te6edf3localeFiltersTb4b4b4.Te6edf3addAllTb4b4b4(Te6edf3listOfTb4b4b4(Ta5d6ff"Ta5d6ffenTa5d6ff"Tb4b4b4)Tb4b4b4)
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3androidResourcesTb4b4b4.Te6edf3localeFiltersTb4b4b4.Te6edf3addAllTb4b4b4(
Te6edf3listOfTb4b4b4(
Ta5d6ff"Ta5d6ffenTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffarTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffbgTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffcaTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffcsTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdeTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffelTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffesTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffetTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fffiTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fffrTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffgaTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffglTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffhrTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffhtTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffhuTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffisTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffitTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffiwTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffjaTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffkoTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffltTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffnlTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffnoTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffptTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffpt-rBRTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffroTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffruTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffskTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffslTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffsqTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffsrTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffsrpTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffsvTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftrTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffukTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffzh-rCNTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffzh-rTWTa5d6ff"Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tb4b4b4}
Te6edf3ndk Tb4b4b4{ Te6edf3abiFilters Tff7b72+Tff7b72= Te6edf3listOfTb4b4b4(Ta5d6ff"Ta5d6ffarmeabi-v7aTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffarm64-v8aTa5d6ff"Tb4b4b4) Tb4b4b4}

Te6edf3testInstrumentationRunner Tff7b72= Ta5d6ff"Ta5d6ffandroidx.test.runner.AndroidJUnitRunnerTa5d6ff"
Tb4b4b4}

T8b949e// Disable ABI splits for bundle builds or when explicitly requested via Gradle property.
T8b949e// Usage: ./gradlew :androidApp:bundleGoogleRelease -Pmeshtastic.disableAbiSplits=true
Tff7b72val Te6edf3disableSplits Tff7b72= Te6edf3providersTb4b4b4.Te6edf3gradlePropertyTb4b4b4(Ta5d6ff"Ta5d6ffmeshtastic.disableAbiSplitsTa5d6ff"Tb4b4b4)Tb4b4b4.Te6edf3map Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3toBooleanTb4b4b4(Tb4b4b4) Tb4b4b4}Tb4b4b4.Te6edf3getOrElseTb4b4b4(Tff7b72falseTb4b4b4)

T8b949e// Enable ABI splits to generate smaller APKs per architecture for F-Droid/IzzyOnDroid
Te6edf3splits Tb4b4b4{
Te6edf3abi Tb4b4b4{
Te6edf3isEnable Tff7b72= Tff7b72!Te6edf3disableSplits
Te6edf3resetTb4b4b4(Tb4b4b4)
Te6edf3includeTb4b4b4(Ta5d6ff"Ta5d6ffarmeabi-v7aTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffarm64-v8aTa5d6ff"Tb4b4b4)
Te6edf3isUniversalApk Tff7b72= Tff7b72true
Tb4b4b4}
Tb4b4b4}

Te6edf3dependenciesInfo Tb4b4b4{
T8b949e// Disables dependency metadata when building APKs (for IzzyOnDroid/F-Droid)
Te6edf3includeInApk Tff7b72= Tff7b72false
T8b949e// Disables dependency metadata when building Android App Bundles (for Google Play)
Te6edf3includeInBundle Tff7b72= Tff7b72false
Tb4b4b4}

Te6edf3packaging Tb4b4b4{
Te6edf3jniLibs Tb4b4b4{
T8b949e// Keep debug symbols in native libraries so reproducible builds don't depend
T8b949e// on the exact NDK version used for stripping. This avoids RB failures when
T8b949e// IzzyOnDroid/F-Droid rebuilds use a different NDK than our CI.
T8b949e// See: https://github.com/meshtastic/Meshtastic-Android/issues/3231
Te6edf3keepDebugSymbolsTb4b4b4.Te6edf3addTb4b4b4(Ta5d6ff"Ta5d6ff**/*.soTa5d6ff"Tb4b4b4)
Tb4b4b4}
Tb4b4b4}

T8b949e// Configure existing product flavors (defined by convention plugin)
T8b949e// with their dynamic version names.
Te6edf3productFlavors Tb4b4b4{
Te6edf3configureEach Tb4b4b4{
Te6edf3versionName Tff7b72= Ta5d6ff"Tffd700${Te6edf3defaultConfigTb4b4b4.Te6edf3versionNameTffd700}Ta5d6ff (Tffd700${Te6edf3defaultConfigTb4b4b4.Te6edf3versionCodeTffd700}Ta5d6ff) Tffd700$Te6edf3nameTa5d6ff"
Tff7b72if Tb4b4b4(Te6edf3name Tff7b72=Tff7b72= Ta5d6ff"Ta5d6ffgoogleTa5d6ff"Tb4b4b4) Tb4b4b4{
Te6edf3manifestPlaceholdersTff7b72[Ta5d6ff"Ta5d6ffMAPS_API_KEYTa5d6ff"Tff7b72] Tff7b72= Ta5d6ff"Ta5d6ffdummyTa5d6ff"
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

Te6edf3buildTypes Tb4b4b4{
Te6edf3release Tb4b4b4{
T8b949e// Unsigned when keystore.properties is absent — a release must never carry the public
T8b949e// debug key. For an installable local release, point keystore.properties at config/debug.keystore.
Tff7b72if Tb4b4b4(Te6edf3keystorePropertiesTff7b72[Ta5d6ff"Ta5d6ffstoreFileTa5d6ff"Tff7b72] Tff7b72!Tff7b72= Tff7b72nullTb4b4b4) Tb4b4b4{
Te6edf3signingConfig Tff7b72= Te6edf3signingConfigsTb4b4b4.Te6edf3namedTb4b4b4(Ta5d6ff"Ta5d6ffreleaseTa5d6ff"Tb4b4b4)Tb4b4b4.Te6edf3getTb4b4b4(Tb4b4b4)
Tb4b4b4}
Te6edf3isDebuggable Tff7b72= Tff7b72false
Tb4b4b4}
Tb4b4b4}
Te6edf3bundle Tb4b4b4{ Te6edf3language Tb4b4b4{ Te6edf3enableSplit Tff7b72= Tff7b72false Tb4b4b4} Tb4b4b4}

Te6edf3testOptions Tb4b4b4{ Te6edf3unitTests Tb4b4b4{ Te6edf3isIncludeAndroidResources Tff7b72= Tff7b72true Tb4b4b4} Tb4b4b4}
Tb4b4b4}

Te6edf3secrets Tb4b4b4{
Te6edf3defaultPropertiesFileName Tff7b72= Ta5d6ff"Ta5d6ffsecrets.defaults.propertiesTa5d6ff"
Te6edf3propertiesFileName Tff7b72= Ta5d6ff"Ta5d6ffsecrets.propertiesTa5d6ff"
Tb4b4b4}

Te6edf3ksp Tb4b4b4{ Te6edf3argTb4b4b4(Ta5d6ff"Ta5d6ffappfunctions:aggregateAppFunctionsTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftrueTa5d6ff"Tb4b4b4) Tb4b4b4}

Te6edf3androidComponents Tb4b4b4{
Te6edf3onVariantsTb4b4b4(Te6edf3selectorTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3withBuildTypeTb4b4b4(Ta5d6ff"Ta5d6ffdebugTa5d6ff"Tb4b4b4)Tb4b4b4) Tb4b4b4{ Te6edf3variant Tff7b72-Tff7b72>
Te6edf3variantTb4b4b4.Te6edf3flavorNameTff7b72?.Te6edf3let Tb4b4b4{ Te6edf3flavor Tff7b72-Tff7b72> Te6edf3variantTb4b4b4.Te6edf3applicationIdTb4b4b4.Te6edf3setTb4b4b4(Ta5d6ff"Ta5d6ffcom.geeksville.mesh.Tffd700$Te6edf3flavorTa5d6ff.debugTa5d6ff"Tb4b4b4) Tb4b4b4}
Tb4b4b4}

Te6edf3onVariantsTb4b4b4(Te6edf3selectorTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3withBuildTypeTb4b4b4(Ta5d6ff"Ta5d6ffreleaseTa5d6ff"Tb4b4b4)Tb4b4b4) Tb4b4b4{ Te6edf3variant Tff7b72-Tff7b72>
Tff7b72if Tb4b4b4(Te6edf3variantTb4b4b4.Te6edf3flavorName Tff7b72=Tff7b72= Ta5d6ff"Ta5d6ffgoogleTa5d6ff"Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3variantNameCapped Tff7b72= Te6edf3variantTb4b4b4.Te6edf3nameTb4b4b4.Te6edf3replaceFirstChar Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3uppercaseTb4b4b4(Tb4b4b4) Tb4b4b4}
Tff7b72val Te6edf3minifyTaskName Tff7b72= Ta5d6ff"Ta5d6ffminifyTffd700${Te6edf3variantNameCappedTffd700}Ta5d6ffWithR8Ta5d6ff"
Tff7b72val Te6edf3uploadTaskName Tff7b72= Ta5d6ff"Ta5d6ffuploadMappingTffd700$Te6edf3variantNameCappedTa5d6ff"
T8b949e// Use tasks.names to check existence without eagerly realizing tasks
Tff7b72if Tb4b4b4(Te6edf3tasksTb4b4b4.Te6edf3namesTb4b4b4.Te6edf3containsTb4b4b4(Te6edf3uploadTaskNameTb4b4b4) Tff7b72&Tff7b72& Te6edf3tasksTb4b4b4.Te6edf3namesTb4b4b4.Te6edf3containsTb4b4b4(Te6edf3minifyTaskNameTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3tasksTb4b4b4.Te6edf3namedTb4b4b4(Te6edf3minifyTaskNameTb4b4b4)Tb4b4b4.Te6edf3configure Tb4b4b4{ Te6edf3finalizedByTb4b4b4(Te6edf3uploadTaskNameTb4b4b4) Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

Te6edf3dependencies Tb4b4b4{
Te6edf3implementationTb4b4b4(Te6edf3projectsTb4b4b4.Te6edf3coreTb4b4b4.Te6edf3bleTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3projectsTb4b4b4.Te6edf3coreTb4b4b4.Te6edf3commonTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3projectsTb4b4b4.Te6edf3coreTb4b4b4.Te6edf3dataTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3projectsTb4b4b4.Te6edf3coreTb4b4b4.Te6edf3databaseTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3projectsTb4b4b4.Te6edf3coreTb4b4b4.Te6edf3datastoreTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3projectsTb4b4b4.Te6edf3coreTb4b4b4.Te6edf3diTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3projectsTb4b4b4.Te6edf3coreTb4b4b4.Te6edf3domainTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3projectsTb4b4b4.Te6edf3coreTb4b4b4.Te6edf3modelTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3projectsTb4b4b4.Te6edf3coreTb4b4b4.Te6edf3navigationTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3jetbrainsTb4b4b4.Te6edf3lifecycleTb4b4b4.Te6edf3viewmodelTb4b4b4.Te6edf3navigation3Tb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3projectsTb4b4b4.Te6edf3coreTb4b4b4.Te6edf3networkTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3projectsTb4b4b4.Te6edf3coreTb4b4b4.Te6edf3nfcTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3projectsTb4b4b4.Te6edf3coreTb4b4b4.Te6edf3prefsTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3meshtasticTb4b4b4.Te6edf3protobufsTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3projectsTb4b4b4.Te6edf3coreTb4b4b4.Te6edf3serviceTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3projectsTb4b4b4.Te6edf3coreTb4b4b4.Te6edf3resourcesTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3projectsTb4b4b4.Te6edf3coreTb4b4b4.Te6edf3uiTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3projectsTb4b4b4.Te6edf3coreTb4b4b4.Te6edf3barcodeTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3projectsTb4b4b4.Te6edf3coreTb4b4b4.Te6edf3takserverTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3projectsTb4b4b4.Te6edf3featureTb4b4b4.Te6edf3introTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3projectsTb4b4b4.Te6edf3featureTb4b4b4.Te6edf3messagingTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3projectsTb4b4b4.Te6edf3featureTb4b4b4.Te6edf3connectionsTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3projectsTb4b4b4.Te6edf3featureTb4b4b4.Te6edf3mapTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3projectsTb4b4b4.Te6edf3featureTb4b4b4.Te6edf3nodeTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3projectsTb4b4b4.Te6edf3featureTb4b4b4.Te6edf3settingsTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3projectsTb4b4b4.Te6edf3featureTb4b4b4.Te6edf3discoveryTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3projectsTb4b4b4.Te6edf3featureTb4b4b4.Te6edf3docsTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3projectsTb4b4b4.Te6edf3featureTb4b4b4.Te6edf3firmwareTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3projectsTb4b4b4.Te6edf3featureTb4b4b4.Te6edf3wifiProvisionTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3projectsTb4b4b4.Te6edf3featureTb4b4b4.Te6edf3widgetTb4b4b4)

Te6edf3implementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3jetbrainsTb4b4b4.Te6edf3composeTb4b4b4.Te6edf3material3Tb4b4b4.Te6edf3adaptiveTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3jetbrainsTb4b4b4.Te6edf3composeTb4b4b4.Te6edf3material3Tb4b4b4.Te6edf3adaptiveTb4b4b4.Te6edf3layoutTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3jetbrainsTb4b4b4.Te6edf3composeTb4b4b4.Te6edf3material3Tb4b4b4.Te6edf3adaptiveTb4b4b4.Te6edf3navigationTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3androidxTb4b4b4.Te6edf3appcompatTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3composeTb4b4b4.Te6edf3multiplatformTb4b4b4.Te6edf3animationTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3composeTb4b4b4.Te6edf3multiplatformTb4b4b4.Te6edf3material3Tb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3composeTb4b4b4.Te6edf3multiplatformTb4b4b4.Te6edf3uiTb4b4b4.Te6edf3toolingTb4b4b4.Te6edf3previewTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3composeTb4b4b4.Te6edf3multiplatformTb4b4b4.Te6edf3uiTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3androidxTb4b4b4.Te6edf3glanceTb4b4b4.Te6edf3appwidgetTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3androidxTb4b4b4.Te6edf3glanceTb4b4b4.Te6edf3appwidgetTb4b4b4.Te6edf3previewTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3androidxTb4b4b4.Te6edf3glanceTb4b4b4.Te6edf3material3Tb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3androidxTb4b4b4.Te6edf3lifecycleTb4b4b4.Te6edf3processTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3jetbrainsTb4b4b4.Te6edf3lifecycleTb4b4b4.Te6edf3viewmodelTb4b4b4.Te6edf3composeTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3jetbrainsTb4b4b4.Te6edf3lifecycleTb4b4b4.Te6edf3runtimeTb4b4b4.Te6edf3composeTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3jetbrainsTb4b4b4.Te6edf3navigation3Tb4b4b4.Te6edf3uiTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3ktorTb4b4b4.Te6edf3clientTb4b4b4.Te6edf3okhttpTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3ktorTb4b4b4.Te6edf3clientTb4b4b4.Te6edf3contentTb4b4b4.Te6edf3negotiationTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3ktorTb4b4b4.Te6edf3serializationTb4b4b4.Te6edf3kotlinxTb4b4b4.Te6edf3jsonTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3ktorTb4b4b4.Te6edf3clientTb4b4b4.Te6edf3loggingTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3coilTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3coilTb4b4b4.Te6edf3networkTb4b4b4.Te6edf3ktor3Tb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3coilTb4b4b4.Te6edf3svgTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3androidxTb4b4b4.Te6edf3coreTb4b4b4.Te6edf3splashscreenTb4b4b4)
T8b949e// Installs the baseline profile produced by :baselineprofile at app startup (API < 31)
T8b949e// and lets ART honor it on first launch. On API 31+ the platform installs it automatically.
Te6edf3implementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3androidxTb4b4b4.Te6edf3profileinstallerTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3kotlinxTb4b4b4.Te6edf3serializationTb4b4b4.Te6edf3jsonTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3usbTb4b4b4.Te6edf3serialTb4b4b4.Te6edf3androidTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3androidxTb4b4b4.Te6edf3workTb4b4b4.Te6edf3runtimeTb4b4b4.Te6edf3ktxTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3koinTb4b4b4.Te6edf3androidTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3koinTb4b4b4.Te6edf3composeTb4b4b4.Te6edf3viewmodelTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3koinTb4b4b4.Te6edf3androidxTb4b4b4.Te6edf3workmanagerTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3kermitTb4b4b4)
Te6edf3implementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3kotlinxTb4b4b4.Te6edf3datetimeTb4b4b4)

Te6edf3debugImplementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3androidxTb4b4b4.Te6edf3composeTb4b4b4.Te6edf3uiTb4b4b4.Te6edf3testTb4b4b4.Te6edf3manifestTb4b4b4)
Te6edf3debugImplementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3androidxTb4b4b4.Te6edf3glanceTb4b4b4.Te6edf3previewTb4b4b4)
T8b949e// LeakCanary auto-installs via a manifest-declared ContentProvider -- no init code needed.
T8b949e// Debug-only (0 method count in release, per LeakCanary's own design). Added after adversarial
T8b949e// mesh-fuzz testing surfaced a GC-thrash concern in the debug log view; this gives continuous,
T8b949e// automatic leak detection (dumped heap + leak trace + notification) for future soak/fuzz runs
T8b949e// instead of manually polling `dumpsys meminfo`.
Te6edf3debugImplementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3leakcanaryTb4b4b4.Te6edf3androidTb4b4b4)

Te6edf3googleImplementationTb4b4b4(Te6edf3projectsTb4b4b4.Te6edf3featureTb4b4b4.Te6edf3carTb4b4b4)
Te6edf3googleImplementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3locationTb4b4b4.Te6edf3servicesTb4b4b4)
Te6edf3googleImplementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3playTb4b4b4.Te6edf3servicesTb4b4b4.Te6edf3mapsTb4b4b4)
Te6edf3googleImplementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3mapsTb4b4b4.Te6edf3composeTb4b4b4)
Te6edf3googleImplementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3mapsTb4b4b4.Te6edf3composeTb4b4b4.Te6edf3utilsTb4b4b4)
Te6edf3googleImplementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3mapsTb4b4b4.Te6edf3composeTb4b4b4.Te6edf3widgetsTb4b4b4)
T8b949e// maps-compose-widgets requests androidx.compose.material:material version-less (expects a BOM
T8b949e// we exclude). Name it with a version so the version is published in the app's graph metadata.
Te6edf3googleImplementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3androidxTb4b4b4.Te6edf3composeTb4b4b4.Te6edf3materialTb4b4b4)
T8b949e// Downloadable Google Fonts for event-firmware branding (Play Services font provider — Google flavor only).
Te6edf3googleImplementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3androidxTb4b4b4.Te6edf3composeTb4b4b4.Te6edf3uiTb4b4b4.Te6edf3textTb4b4b4.Te6edf3googleTb4b4b4.Te6edf3fontsTb4b4b4)
Te6edf3googleImplementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3bundlesTb4b4b4.Te6edf3ddTb4b4b4.Te6edf3sdkTb4b4b4.Te6edf3androidTb4b4b4)
Te6edf3googleImplementationTb4b4b4(Te6edf3platformTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3firebaseTb4b4b4.Te6edf3bomTb4b4b4)Tb4b4b4)
Te6edf3googleImplementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3firebaseTb4b4b4.Te6edf3analyticsTb4b4b4)
Te6edf3googleImplementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3firebaseTb4b4b4.Te6edf3crashlyticsTb4b4b4)
Te6edf3googleImplementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3firebaseTb4b4b4.Te6edf3aiTb4b4b4)
Te6edf3googleImplementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3firebaseTb4b4b4.Te6edf3aiTb4b4b4.Te6edf3ondeviceTb4b4b4)
Te6edf3googleImplementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3mlkitTb4b4b4.Te6edf3translateTb4b4b4)
Te6edf3googleImplementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3mlkitTb4b4b4.Te6edf3languageTb4b4b4.Te6edf3idTb4b4b4)
Te6edf3googleImplementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3mlkitTb4b4b4.Te6edf3genaiTb4b4b4.Te6edf3promptTb4b4b4)

Te6edf3googleImplementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3androidxTb4b4b4.Te6edf3appfunctionsTb4b4b4)
Te6edf3addTb4b4b4(Ta5d6ff"Ta5d6ffkspGoogleTa5d6ff"Tb4b4b4, Te6edf3libsTb4b4b4.Te6edf3androidxTb4b4b4.Te6edf3appfunctionsTb4b4b4.Te6edf3compilerTb4b4b4)

Te6edf3fdroidImplementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3osmdroidTb4b4b4.Te6edf3androidTb4b4b4)
Te6edf3fdroidImplementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3geopackageTb4b4b4.Te6edf3androidTb4b4b4) Tb4b4b4{
Te6edf3becauseTb4b4b4(Ta5d6ff"Ta5d6ff6.7.5 depends on 16 KB page-size compatible SQLite Android BindingsTa5d6ff"Tb4b4b4)
Te6edf3excludeTb4b4b4(Te6edf3group Tff7b72= Ta5d6ff"Ta5d6ffcom.j256.ormliteTa5d6ff"Tb4b4b4)
Tb4b4b4}
Te6edf3fdroidImplementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3osmbonuspackTb4b4b4)

Te6edf3testImplementationTb4b4b4(Te6edf3kotlinTb4b4b4(Ta5d6ff"Ta5d6fftest-junitTa5d6ff"Tb4b4b4)Tb4b4b4)
Te6edf3testImplementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3androidxTb4b4b4.Te6edf3workTb4b4b4.Te6edf3testingTb4b4b4)
Te6edf3testImplementationTb4b4b4(Te6edf3projectsTb4b4b4.Te6edf3coreTb4b4b4.Te6edf3testingTb4b4b4)
Te6edf3testImplementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3koinTb4b4b4.Te6edf3testTb4b4b4)
Te6edf3testRuntimeOnlyTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3junitTb4b4b4.Te6edf3vintageTb4b4b4.Te6edf3engineTb4b4b4)
Te6edf3testImplementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3kotlinxTb4b4b4.Te6edf3coroutinesTb4b4b4.Te6edf3testTb4b4b4)
Te6edf3testImplementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3robolectricTb4b4b4)
Te6edf3testImplementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3androidxTb4b4b4.Te6edf3testTb4b4b4.Te6edf3coreTb4b4b4)
Te6edf3testImplementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3composeTb4b4b4.Te6edf3multiplatformTb4b4b4.Te6edf3uiTb4b4b4.Te6edf3testTb4b4b4)
Te6edf3testImplementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3androidxTb4b4b4.Te6edf3testTb4b4b4.Te6edf3extTb4b4b4.Te6edf3junitTb4b4b4)
Te6edf3testImplementationTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3androidxTb4b4b4.Te6edf3glanceTb4b4b4.Te6edf3appwidgetTb4b4b4)
T8b949e// JVM variant provides the host-platform native library for BundledSQLiteDriver under Robolectric
Te6edf3testRuntimeOnlyTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3androidxTb4b4b4.Te6edf3sqliteTb4b4b4.Te6edf3bundledTb4b4b4.Te6edf3jvmTb4b4b4)

T8b949e// Producer of the baseline profile consumed by the release build. The androidx.baselineprofile
T8b949e// plugin merges the generated rules into src/<variant>/generated/baselineProfiles at build time.
Te6edf3baselineProfileTb4b4b4(Te6edf3projectsTb4b4b4.Te6edf3baselineprofileTb4b4b4)
Tb4b4b4}

Served by rngit 1.5.0 - Generated in 0.11s